-- CALC_MONSTER_SOUL_BONUS514
-- 怪物514被拘禁灵魂抽取（专用）

return function()
    local seed = DungeonM.getRandSeed("MONSTER_SOUL_BONUS511");
    local items = { { ["classId"] = 7987, ["ratio"] = 25, } };

    -- 特殊灵魂需要判断是否出现过
    local propertyOccurs = DungeonM.getPropertyOccurs();
    local classId;
    for _, classId in pairs({ 7988, 7989, 7990, }) do
        if not propertyOccurs[classId] then
            table.insert(items, { ["classId"] = classId, ["ratio"] = 25, });
        end
    end

    local class = fetchElemBySeed(items, seed);

    classId = class["classId"];
    if table.indexOf({ 7988, 7989, 7990, }, classId) ~= -1 then
        DungeonM.statPropertyOccurs(classId);
    end

    return classId;
end